<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Generator</title>
</head>
<body>
    <script >
        // Generator生成器
        function * foo(){
            console.log('start')
            try {
                const res = yield 'foo'
                console.log(res)
            } catch (error) {
                console.log(error)
            }
        }

        const generator = foo()
        // 当执行next()的时候，foo函数才会开始执行
        // yield中的值就会作为返回的对象的value去返回
        const result = generator.next()
        console.log(result)

        // 当再次调用next()方法并传入参数，会从foo中栈停的位置继续往下执行，将值传递给res
        generator.next('bar')

        // 抛出异常，执行的时候就会执行到catch位置
        // generator.throw(new Error('Generator error'))

    </script>
</body>
</html>